
                       Structural Logical Relations with
                      Case Analysis and Equality Reasoning

                              Electronic Appendix


                      Ulrik Rasmussen     Andrzej Filinski
                      dolle@diku.dk       andrzej@diku.dk

                                   2013-07-28



Contents
--------

This archive contains the Twelf source code for the formalization and soundness
proof of an axiomatic reasoning system for proving observational equivalence for
a call-by-name simply-typed lambda calculus.

The formalization uses an extension of the method of structural logical
relations by Schürmann and Sarnat, extended with support for reasoning by case
distinction and equality in assertion logic proofs.

The developments involves a substantial amount of boilerplate code, and the most
tedious parts are thus auto-generated by a combination of Haskell programs and
M4 scripts. To build, invoke the supplied Makefile -- see the Requirements
section for a list of prerequisites. The directory `precompiled' contains a
precompiled formalization for the language presented in the article.


Requirements
------------

The code-generation system was developed using GHC 7.6.2 and GNU M4
1.4.16. Additionally, the following Haskell libraries were used:

 * bytestring-0.10.0.2
 * text-0.11.2.3
 * pretty-1.1.1.0
 * containers-0.5.0.0
 * transformers-0.3.0.0
 * parsec-3.1.3
